#ifndef __LINKLIST_H_
#define __LINKLIST_H_

#include"DynamicArray.h"

class LinkList
{
public:
    using ElementType = int;

    LinkList();
    ~LinkList();
    // 尾插法
    void InsertTail(const ElementType & element);

    // 头插法
    void InsertHead(const ElementType & element);

    // 中间插
    void InsertByIndex(int index,const ElementType & element);
   
    //按位置删除
    void RemoveByIndex(int index);    
   
//    按值删除
    void RemoveByElement(const ElementType & element);
   

    // 按位置查找
    ElementType* FindByIndex(int index);


    // 按值查找
    DynamicArray FindByElement(const ElementType & element);



    
    // 冒泡排序
    void BubbleSort();


    // 快速排序
    

    void Sort();



    // 链表逆序:非递归
    void Reserve();

    // 递归逆序
   
    void Reserve2();

    void show();














private:
    struct Node   //链表的结点  （数据域  和   指针域）
    {
        Node(const ElementType & data):data(data),next(nullptr){}  //构造函数

        ElementType data;  //数据域
        Node *next;  //指针域
    };

    void FastSort(Node *start,Node *end);    


     Node* Reserve2(Node*node);


    Node *head;

    int size;       //元素个数
};




#endif